package com.qf.pojo.day02;

/**
 *
 * 约瑟夫环

 * @author lixu
 */
public class YueSeFuDemo {


    /**
     * 环：
     * 双向链表
     */
    private static class Node<T>{
        T value;
        Node<T> prev;
        Node<T> next;
        public Node(T value) {
            this.value = value;
        }
    }

    public static void main(String[] args) {
        //第一个人
        Node top = new Node(1);
        //临时节点
        Node p = top;//为了节点移动

        for (int i = 2; i <= 41; i++) {
            //创建第二及以上节点
            p.next = new Node(i);
            //前驱
            p.next.prev=p;
            //移动
            p = p.next;
        }
        //当前p是第41个节点
        p.next=top;
        top.prev=p;
        //遍历查看一下
        p = top;
    /*    for (int i = 1; i <=41 ; i++) {
            System.out.print(p.value + " ");
            p = p.next;
        }*/
/*        while (true){
            System.out.print(p.value + " ");
            p = p.next;
        }*/
        //System.out.println();


     /*   for (int i = 1;;i++) {

        }*/

        int i = 1;
        while (true){
            if(i%3==0){
                if(p.next!=p){
                    //打sha者是谁
                    System.out.print(p.value + " ");
                    //shasi它
                    p.prev.next=p.next;
                    p.next.prev=p.prev;
                }else{
                    //剩余自己了 打印自己是谁
                    System.out.print(p.value + " ");
                    break;
                }
            }
            i++;
            p = p.next;
        }






    }







}
